--[[
描述 ： UITabBarView
作者 ： 付大志
时间 ： 13/08/08
]]
UITabBarView = Class(MLView,'UITabBarView');

UITabBarView.viewCtrl           =  nil;         -- 所在viewctrl
UITabBarView.mWidth             =  nil;         -- 宽度
UITabBarView.mView              =  {};         -- view视图
UITabBarView.mHeight            =  nil;         -- 高度
UITabBarView.selectItem         =  -1;

UITabBarView.mItemsHeight       =  nil;
UITabBarView.mContentRootView   =  nil;
UITabBarView.mItemsRootView     =  nil;

UITabBarView.mContentCtrls      =  nil;
UITabBarView.mTabBarItemsViews  =  nil;
UITabBarView.mIsCreatAllTab     =  false;   --是否初始化创建所有的tab页面

--[[
功能   ： new UITabBarView 控件
参数   ： w              --  宽度
h              --  高度
itemsHeight   --   bar高度
isTop         --  是否是上tab，默认是下tab
返回   ： UITabBarView 实例
]]

function UITabBarView:init(width, height, itemsHeight, isTop, viewCtrl, id)
  width  = width or UITheme.TABBARVIEW_WIDTH ;
  height = height or UITheme.TABBARVIEW_HEIGHT ;

  self:initView(width, height, viewCtrl, id);

  self.viewCtrl  = viewCtrl

  self.id = id;
  self.mWidth =  width;
  self.mHeight = height;
  self.mItemsHeight = itemsHeight;
  self.mContentRootView = MLView.new():initView(width, height-itemsHeight,viewCtrl, id);
  self.mItemsRootView = MLView.new():initView(width, itemsHeight,viewCtrl, id);
  self.mItemsRootView:setBg(UIImage.imageName('system/sys_wait_bg.png'));
  
  if isTop == true then
    self:add(self.mItemsRootView);
    self:add(self.mContentRootView, 0, itemsHeight);
  else
    self:add(self.mContentRootView);
    self:add(self.mItemsRootView, 0, height-itemsHeight);
  end
  return self;
end


function UITabBarView:setViewCtrls(...)
  self.mContentCtrls = arg;
  if self.mIsCreatAllTab then  --是否初始化创建所有的tab页面
    for i,v in ipairs(self.mContentCtrls) do
      self.mView[i] = MLView.new():initView(self.mWidth, self.mHeight- self.mItemsHeight,self.viewCtrl);
      self.mContentCtrls[i].mInstance = self.viewCtrl.mInstance;
      self.mContentCtrls[i].navCtrl = self.viewCtrl.navCtrl;
      self.mContentCtrls[i]:onCtrlCreate(self.mView[i]);
      self.mContentRootView:add(self.mView[i],0,0)
    end
  else
    self.mView[1] = MLView.new():initView(self.mWidth, self.mHeight- self.mItemsHeight,self.viewCtrl);
    self.mContentCtrls[1].mInstance = self.viewCtrl.mInstance;
    self.mContentCtrls[1].navCtrl = self.viewCtrl.navCtrl;
    self.mContentCtrls[1]:onCtrlCreate(self.mView[1]);
    self.mContentRootView:add(self.mView[1],0,0)
  end
  -- 有待实践考证
  --  for i,v in ipairs(self.mContentCtrls) do
  --    v.viewDataCache = self:getBackData("ctrlData"..i, nil);
  --  -- v.viewDataCache = self:getBackData(self.id, nil);
  --  end
  -- g给子viewcontrl添加导航功能
  --  for i,v in ipairs(arg) do
  --    v.navCtrl = self.viewCtrl.navCtrl;
  --  end
end

-- 目前支持等分
function UITabBarView:setBarItemView(...)

  self.mTabBarItemsViews = arg;
  local num = #self.mTabBarItemsViews;
  --  print('nnnnnnnnnnnn==',num)
  local gap  = 1/num*self.mWidth;
  local left = 0;
  for i,v in ipairs(self.mTabBarItemsViews) do
    v.tag = i;
    v.onClick = function ()
      self:setSelItem(i);
    end
    self.mItemsRootView:add(v,left, 0);
    left = left + gap;
  end
  local  width = 0;
  for i,v in ipairs(arg) do
    width = v.mWidth  + width;
  end
  if width > self.mWidth then
  else
  end
end

--[[
功能   ： 设置tab选中索引
参数   ： index   --- 选中索引
返回   ： 无
]]
function UITabBarView:setSelItem(index)
  -- 记住位置
  local num = #self.mContentCtrls;
  if  index > num then return end
  if  self.selectItem == index then return end
  local isCreat = false
  if self.mView[index] == nil then    --为nil 说明还未创建 则创建
    isCreat = true ;
    self.mView[index] = MLView.new():initView(self.mWidth, self.mHeight- self.mItemsHeight,self.viewCtrl);
    self.mContentCtrls[index].mInstance = self.viewCtrl.mInstance;
    self.mContentCtrls[index].navCtrl = self.viewCtrl.navCtrl;
    self.mContentCtrls[index]:onCtrlCreate(self.mView[index]);
    self.mContentRootView:add(self.mView[index],0,0)
  end


  for i,v in ipairs(self.mContentCtrls) do
    if i == index then
      self.mView[i]:setHidden(false)  --当前view显示
      if not isCreat then
         self.mContentCtrls[i]:onCtrlResume();  -- 恢复
      end
    else
      if self.mView[i] ~= nil then
        self.mView[i]:setHidden(true)  --其他的view设置隐藏
        self.mContentCtrls[i]:onCtrlPause();  -- 暂停
      end
    end
  end

  self:setSelTabBarView(index);  -- 改变tabBbar状态
  self.selectItem =  index;

--  local viewCtrl = self.mContentCtrls[index];
--  viewCtrl.rootView = self.mContentRootView;
--  self.mContentRootView:delAll();
--  local contentView = viewCtrl:onCtrlCreate(self.mContentRootView);
--
--  local w, h = contentView:getWH();
--  viewCtrl:onCreate(contentView, w, h);
--  --     viewCtrl:onCtrlCreate();
--  viewCtrl:onCtrlResume();
--  --viewCtrl:onCreate();
--  if self.selectItem > 0 then
--    self.mContentCtrls[self.selectItem]:onCtrlPause();  -- 暂停
--    self.mContentCtrls[self.selectItem]:onPause();  -- 暂停
--  end
end


--[[
功能   ： 得到当前选中的tabbar索引
参数   ： 无
返回   ： 无
]]
function UITabBarView:getSelItem()
  return self.selectItem;
end

--[[
功能   ： 设置导航栏背景图片
参数   ： image  图片资源
返回   ： 无
]]
function UITabBarView:setControllBg(image)
  self.mItemsRootView:setBg(image);
end

--[[
功能   ： 控件被摧毁通知 是在ctrl onResume
参数   ： 无
返回   ： 无
]]
function UITabBarView:onResume()
 self.mContentCtrls[self.selectItem]:onCtrlResume();  -- 恢复
end

--[[
功能   ： 控件被摧毁通知 是在ctrl pause时候的通知
参数   ： 无
返回   ： 无
]]
function UITabBarView:onPause()
 self.mContentCtrls[self.selectItem]:onCtrlPause();  -- 暂停

end

--[[
功能   ： 设置选中第一个tabcard
参数   ： index   --- 选中索引
返回   ： 无
]]
function UITabBarView:setSelTabBarView(index)
  local num = #self.mTabBarItemsViews;
  if  index > num then return end
  if  self.selectItem == index then return end
  for i,v in ipairs(self.mTabBarItemsViews) do
    if  i == index then
      v.isSel =true;
    else
      v.isSel =false;
    end
    v:show();
  end
end
--[[
功能   ： 显示控件
参数   ： 无
返回   ： 无
]]
function UITabBarView:show()
  self:setSelItem(1)
  --  local idex = -1;
  --  idex = self:getBackData("idex", -1);
  --  --idex = self:getBackData(111, -1);
  --  print('-----idex=',idex);
  --  if idex == -1 or idex == nil then
  --    self:setSelItem(1)
  --  else
  --    self:setSelItem(idex)
  --  end
end

--[[
功能   ： 更新控件
参数   ： 无
返回   ： 无
]]
function UITabBarView:update()
  self:show();
end

function UITabBarView:onDestroy(  )
  --  print('UITabBarView:onDestroy(  )');
  local tempVCs = self.mContentCtrls;
  self.mIsCreatAllTab = false ;
  for i = 1,#tempVCs do
    NavCtrl.viewCtrlArray[tempVCs[i].vcSeq] = nil;
    tempVCs[i]:onDestroy();
    self.mView[i] = nil;
  end
  self.mContentRootView = nil;

  self.viewCtrl           =  nil;         -- 所在viewctrl
  self.mView              =  {};         -- view视图
  self.mItemsRootView     =  nil;
  self.mContentCtrls      =  nil;
  self.mTabBarItemsViews  =  nil;
end
